home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / PowerPlant / Everything / CBars.cp < prev    next >
Encoding:
Text File  |  1998-10-11  |  8.6 KB  |  350 lines  |  [TEXT/CWIE]

  1. // CBars.cp -- window methods
  2.  
  3. #include "CBars.h"
  4.  
  5. #include <UEnvironment.h>
  6. #include <UReanimator.h>
  7. #include <URegistrar.h>
  8. #include <LStream.h>
  9. #include <LTabGroup.h>
  10. #include <UAttachments.h>
  11. #include <LView.h>
  12. #include <CTabPanelGroup.h>
  13. #include <LAMTabsControlImp.h>
  14. #include <LGATabsControlImp.h>
  15. #include <LScrollBar.h>
  16. #include <LAMTrackActionImp.h>
  17. #include <LStdScrollBarImp.h>
  18. #include <CustomControls.h>
  19. #include <LSlider.h>
  20. #include <LGASliderImp.h>
  21. #include <LLittleArrows.h>
  22. #include <LGALittleArrowsImp.h>
  23. #include <LProgressBar.h>
  24. #include <LGAProgressBarImp.h>
  25. #include <LChasingArrows.h>
  26. #include <LAMControlImp.h>
  27. #include <LGAChasingArrowsImp.h>
  28. #include <CTextUtils.h>
  29.  
  30. #include "DDocData.h"
  31. #include "DModalCheckboxesData.h"
  32. #include "DModalRadiosData.h"
  33. #include "DModalTextData.h"
  34. #include "DModalStuffData.h"
  35. #include "DModalBarsData.h"
  36. #include "DModelessCheckboxesData.h"
  37. #include "DModelessRadiosData.h"
  38. #include "DModelessTextData.h"
  39. #include "DModelessStuffData.h"
  40. #include "DModelessBarsData.h"
  41. #include "EverythingCmds.h"
  42.  
  43. const MessageT    msgBars    = 'Bars';
  44. const MessageT    msgStandard    = 'Stad';
  45. const MessageT    msgGraphic    = 'Grac';
  46. const MessageT    msgSlider    = 'Slir';
  47. const MessageT    msgTickMarks    = 'Tics';
  48. const MessageT    msgNonDirectional    = 'Nonl';
  49. const MessageT    msgLittleArrows    = 'Lits';
  50. const MessageT    msgSpinner    = 'Spir';
  51. const MessageT    msgVolumeControl    = 'Voll';
  52. const MessageT    msgJimSSlider    = 'Jimr';
  53.  
  54. #define PPob_BarsID    206
  55. #define RidL_BarsID    206
  56.  
  57. Boolean        CBars::sIsRegistered = false;
  58.  
  59. //----------
  60. CBars*        CBars::CreateBars (
  61.     LCommander*        inSuperCommander,
  62.     DDocData*        inData)
  63. {
  64.     if (!sIsRegistered) {
  65.         RegisterClass ();
  66.     }
  67.  
  68.     CBars*        window;
  69.     window = (CBars *)LWindow::CreateWindow(PPob_BarsID, inSuperCommander);
  70.     window->ConnectToData (inData);
  71.     return window;
  72. }
  73.  
  74. //----------
  75. #define    RegisterClasses(AbstractClass,AMImpClass,GAImpClass)    \
  76.     RegisterClass_(AbstractClass);    \
  77.     if (useAppearance) {    \
  78.         RegisterClassID_(AMImpClass, AbstractClass::imp_class_ID);    \
  79.     } else {    \
  80.         RegisterClassID_(GAImpClass, AbstractClass::imp_class_ID);    \
  81.     }
  82.  
  83. //----------
  84. void    CBars::RegisterClass ()
  85. {
  86.     Boolean        useAppearance = UEnvironment::HasFeature (env_HasAppearance);
  87.  
  88.     RegisterClass_(CBars);
  89.  
  90.     // register the pane classes we use
  91.     RegisterClass_(LView);
  92.     RegisterClasses (CTabPanelGroup, LAMTabsControlImp, LGATabsControlImp);
  93.     RegisterClasses (LScrollBar, LAMTrackActionImp, LStdScrollBarImp);
  94.     RegisterClasses (CScrollBar, CustomControlImp, CustomControlImp);
  95.     RegisterClasses (LSlider, LAMTrackActionImp, LGASliderImp);
  96.     RegisterClasses (LLittleArrows, LAMTrackActionImp, LGALittleArrowsImp);
  97.     RegisterClasses (LProgressBar, LAMTrackActionImp, LGAProgressBarImp);
  98.     RegisterClasses (LChasingArrows, LAMControlImp, LGAChasingArrowsImp);
  99.     RegisterClasses (CControlPane, CustomControlImp, CustomControlImp);
  100.  
  101.     sIsRegistered = true;
  102. }
  103.  
  104. //----------
  105. CBars::CBars (
  106.     LStream*    inStream)
  107.     : LWindow (inStream)
  108. {
  109. }
  110.  
  111. //----------
  112. CBars::~CBars ()
  113. {
  114. }
  115.  
  116. //----------
  117. //    This member function gets called once the containment hierarchy that contains
  118. //    this pane has been built. It gives us a chance to get data members for
  119. //    interesting subviews, and to do other operations now that our subviews exist.
  120. void    CBars::FinishCreateSelf ()
  121. {
  122.     mBarsPanel = (CTabPanelGroup*) FindPaneByID ('Bars');
  123.  
  124.     mStandardScroll = (LScrollBar*) FindPaneByID ('Stad');
  125.  
  126.     mGraphicScroll = (CScrollBar*) FindPaneByID ('Grac');
  127.  
  128.     mSliderScroll = (LSlider*) FindPaneByID ('Slir');
  129.  
  130.     mTickMarksScroll = (LSlider*) FindPaneByID ('Tics');
  131.  
  132.     mNonDirectionalScroll = (LSlider*) FindPaneByID ('Nonl');
  133.  
  134.     mLittleArrowsScroll = (LLittleArrows*) FindPaneByID ('Lits');
  135.  
  136.     mSpinnerScroll = (CScrollBar*) FindPaneByID ('Spir');
  137.  
  138.     mVolumeControlScroll = (CScrollBar*) FindPaneByID ('Voll');
  139.  
  140.     mJimSSliderScroll = (CScrollBar*) FindPaneByID ('Jimr');
  141.  
  142.     mStandard2Bar = (LProgressBar*) FindPaneByID ('Sta2');
  143.  
  144.     mIndeterminateBar = (LProgressBar*) FindPaneByID ('Inde');
  145.  
  146.     mChasingArrowsBar = (LChasingArrows*) FindPaneByID ('Chas');
  147.  
  148.     mRectangleBar = (CControlPane*) FindPaneByID ('Rece');
  149.  
  150.     mRoundRectBar = (CControlPane*) FindPaneByID ('Rout');
  151.  
  152.     mBarberPoleBar = (CControlPane*) FindPaneByID ('Bare');
  153.  
  154.     mRoundBarberBar = (CControlPane*) FindPaneByID ('Rour');
  155.  
  156.  
  157.     UReanimator::LinkListenerToControls(this, this, RidL_BarsID);
  158.         // "connect" self to our controls that we want to "listen" to
  159.  
  160.     // any additional initialization for your window:
  161. }
  162.  
  163. //----------
  164. void    CBars::ConnectToData (
  165.     DDocData*        inData)
  166. {
  167.     mData = inData;
  168.     mData->AddListener (this);
  169.  
  170.     mBarsPanel->SetValue (mData->GetBars ());
  171.     mStandardScroll->SetValue (mData->GetStandard2 ());
  172.     mGraphicScroll->SetValue (mData->GetGraphic2 ());
  173.     mSliderScroll->SetValue (mData->GetSlider ());
  174.     mTickMarksScroll->SetValue (mData->GetTickMarks ());
  175.     mNonDirectionalScroll->SetValue (mData->GetNonDirectional ());
  176.     mLittleArrowsScroll->SetValue (mData->GetLittleArrows ());
  177.     mSpinnerScroll->SetValue (mData->GetSpinner ());
  178.     mVolumeControlScroll->SetValue (mData->GetVolumeControl ());
  179.     mJimSSliderScroll->SetValue (mData->GetJimSSlider ());
  180.     mStandard2Bar->SetValue (mData->GetStandard3 ());
  181.     mIndeterminateBar->SetValue (mData->GetIndeterminate ());
  182.     mChasingArrowsBar->SetValue (mData->GetChasingArrows ());
  183.     mRectangleBar->SetValue (mData->GetRectangle ());
  184.     mRoundRectBar->SetValue (mData->GetRoundRect ());
  185.     mBarberPoleBar->SetValue (mData->GetBarberPole ());
  186.     mRoundBarberBar->SetValue (mData->GetRoundBarber ());
  187. }
  188.  
  189. //----------
  190. void    CBars::DataChanged (
  191.     long        inDataID)
  192. {
  193.     StopListening ();
  194.  
  195.     if (inDataID == idBars) {
  196.         mBarsPanel->SetValue (mData->GetBars ());
  197.     }
  198.     if (inDataID == idStandard2) {
  199.         mStandardScroll->SetValue (mData->GetStandard2 ());
  200.     }
  201.     if (inDataID == idGraphic2) {
  202.         mGraphicScroll->SetValue (mData->GetGraphic2 ());
  203.     }
  204.     if (inDataID == idSlider) {
  205.         mSliderScroll->SetValue (mData->GetSlider ());
  206.     }
  207.     if (inDataID == idTickMarks) {
  208.         mTickMarksScroll->SetValue (mData->GetTickMarks ());
  209.     }
  210.     if (inDataID == idNonDirectional) {
  211.         mNonDirectionalScroll->SetValue (mData->GetNonDirectional ());
  212.     }
  213.     if (inDataID == idLittleArrows) {
  214.         mLittleArrowsScroll->SetValue (mData->GetLittleArrows ());
  215.     }
  216.     if (inDataID == idSpinner) {
  217.         mSpinnerScroll->SetValue (mData->GetSpinner ());
  218.     }
  219.     if (inDataID == idVolumeControl) {
  220.         mVolumeControlScroll->SetValue (mData->GetVolumeControl ());
  221.     }
  222.     if (inDataID == idJimSSlider) {
  223.         mJimSSliderScroll->SetValue (mData->GetJimSSlider ());
  224.     }
  225.     if (inDataID == idStandard3) {
  226.         mStandard2Bar->SetValue (mData->GetStandard3 ());
  227.     }
  228.     if (inDataID == idIndeterminate) {
  229.         mIndeterminateBar->SetValue (mData->GetIndeterminate ());
  230.     }
  231.     if (inDataID == idChasingArrows) {
  232.         mChasingArrowsBar->SetValue (mData->GetChasingArrows ());
  233.     }
  234.     if (inDataID == idRectangle) {
  235.         mRectangleBar->SetValue (mData->GetRectangle ());
  236.     }
  237.     if (inDataID == idRoundRect) {
  238.         mRoundRectBar->SetValue (mData->GetRoundRect ());
  239.     }
  240.     if (inDataID == idBarberPole) {
  241.         mBarberPoleBar->SetValue (mData->GetBarberPole ());
  242.     }
  243.     if (inDataID == idRoundBarber) {
  244.         mRoundBarberBar->SetValue (mData->GetRoundBarber ());
  245.     }
  246.  
  247.     StartListening ();
  248. }
  249.  
  250. //----------
  251. void    CBars::ListenToMessage (
  252.     MessageT    inMessage,
  253.     void*        ioParam)
  254. {
  255.     switch (inMessage) {
  256.     case msgDataChanged:
  257.             DataChanged ((long)ioParam);
  258.         break;
  259.  
  260.     case msgBars:
  261.             mData->SetBars (mBarsPanel->GetValue ());
  262.         break;
  263.  
  264.     case msgStandard:
  265.             mData->SetStandard2 (mStandardScroll->GetValue ());
  266.         break;
  267.  
  268.     case msgGraphic:
  269.             mData->SetGraphic2 (mGraphicScroll->GetValue ());
  270.         break;
  271.  
  272.     case msgSlider:
  273.             mData->SetSlider (mSliderScroll->GetValue ());
  274.         break;
  275.  
  276.     case msgTickMarks:
  277.             mData->SetTickMarks (mTickMarksScroll->GetValue ());
  278.         break;
  279.  
  280.     case msgNonDirectional:
  281.             mData->SetNonDirectional (mNonDirectionalScroll->GetValue ());
  282.         break;
  283.  
  284.     case msgLittleArrows:
  285.             mData->SetLittleArrows (mLittleArrowsScroll->GetValue ());
  286.         break;
  287.  
  288.     case msgSpinner:
  289.             mData->SetSpinner (mSpinnerScroll->GetValue ());
  290.         break;
  291.  
  292.     case msgVolumeControl:
  293.             mData->SetVolumeControl (mVolumeControlScroll->GetValue ());
  294.         break;
  295.  
  296.     case msgJimSSlider:
  297.             mData->SetJimSSlider (mJimSSliderScroll->GetValue ());
  298.         break;
  299.  
  300.     default:
  301.           ; // do something
  302.         break;
  303.     }
  304. }
  305.  
  306. //----------
  307. Boolean        CBars::ObeyCommand (
  308.     CommandT    inCommand,
  309.     void*        ioParam)
  310. {
  311.     Boolean        cmdHandled = true;
  312.  
  313.     if (inCommand < 0) {
  314.         // modal dialog has finished
  315.  
  316.         switch (-inCommand) {
  317.         }
  318.  
  319.     } else {
  320.         switch (inCommand) {
  321.  
  322.         default:
  323.                 cmdHandled = LWindow::ObeyCommand(inCommand, ioParam);
  324.             break;
  325.         }
  326.     }
  327.  
  328.     return cmdHandled;
  329. }
  330.  
  331. //----------
  332. void    CBars::FindCommandStatus (
  333.     CommandT    inCommand,
  334.     Boolean        &outEnabled,
  335.     Boolean        &outUsesMark,
  336.     Char16        &outMark,
  337.     Str255        outName)
  338. {
  339.     outUsesMark = false;
  340.  
  341.     switch (inCommand) {
  342.  
  343.  
  344.     default:
  345.             LWindow::FindCommandStatus(inCommand, outEnabled,
  346.                                         outUsesMark, outMark, outName);
  347.         break;
  348.     }
  349. }
  350.